home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / info-service / www / doc / url6.txt < prev    next >
Text File  |  1993-07-16  |  48KB  |  1,021 lines

  1.  
  2.  
  3.  
  4. Uniform Resource Locators              Tim Berners-Lee
  5. RFC XXXX                                          CERN
  6. IETF URL Working Group                    14 July 1993
  7.  
  8.  
  9.  
  10.                           Uniform Resource Locators
  11.  
  12.  
  13.      Status of this memo
  14.  
  15.             This document is an Internet Draft.  Internet Drafts are
  16.           working documents of the Internet Engineering Task Force
  17.           (IETF), its Areas, and its Working Groups.  Note that other
  18.           groups may also distribute working documents as Internet
  19.           Drafts.
  20.             Internet Drafts are working documents valid for a maximum of
  21.           six months.  Internet Drafts may be updated, replaced, or
  22.           obsoleted by other documents at any time.  It is not
  23.           appropriate to use Internet Drafts as reference material or to
  24.           cite them other than as a "working draft" or "work in
  25.           progress".
  26.             Distribution of this document is unlimited.  Please send
  27.           comments to the author as timbl@info.cern.ch. or to the
  28.           discussion list  ietf-url@merit.edu.
  29.  
  30.      Abstract
  31.  
  32.             Many protocols and systems for document search and retrieval
  33.           are currently in use, and many more protocols or refinements
  34.           of existing protocols are to be expected in a field whose
  35.           expansion is explosive.
  36.             These systems are aiming to achieve global search and
  37.           readership of documents across differing computing platforms,
  38.           and despite a plethora of protocols and data formats.   As
  39.           protocols evolve, gateways can allow global access to remain
  40.           possible. As data formats evolve, format conversion programs
  41.           can preserve global access.  There is one area, however, in
  42.           which it is impractical to make conversions, and that is in
  43.           the names and addresses used to identify objects.  This is
  44.           because names and addresses of objects are passed on in so
  45.           many ways, from the backs of envelopes to hypertext objects,
  46.           and may have a long life.
  47.             This paper discusses the requirements on a universal syntax
  48.           which can be used to refer to objects available using existing
  49.           protocols, and may be extended with technology.  It makes a
  50.           recommendation for a generic syntax, and for specific forms
  51.           for "Uniform Resource Locators" (URLs)of objects accessible
  52.           using existing Internet protocols. Uniform Resource Locators                        Berners-Lee
  53.  
  54.  
  55.  
  56.      Terms
  57.  
  58.             The objects on the network which are to be named and
  59.           addressed include typically objects which can be retrieved,
  60.           and objects which can be searched.   There is a great variety
  61.           of other objects which may support other operations.  We imply
  62.           nothing about the contents of objects in this document.
  63.           Whereas human-readable documents are currently the center of
  64.           interest of the field, we envisage all aspects discussed in
  65.           this paper applying to generalised objects when systems to
  66.           handle them become available. The "object" is the unit of
  67.           reference and need not correspond to any unit of storage.  We
  68.           refer to objects which can be searched as "indexes".  We
  69.           emphasise that this is the abstract view of the client, and
  70.           these objects need not correspond to physical files on
  71.           computers. We refer to the person who does the retrieval or
  72.           searching as the user.
  73.             Within this document, we use the terms "name" very generally
  74.           for a string of characters describing an object,  whatever its
  75.           combination of properties mentioned below.  (The term usually
  76.           has a narrower meaning but we needed some term for the
  77.           universal set).  The term "address" is reserved for an string
  78.           which specifies a more or less physical location.  The term
  79.           "locator" refers to a URL as here defined.
  80.  
  81.      Requirements
  82.  
  83.             This section discusses requirements for URLs, as an
  84.           introduction of and background for the Recommendations
  85.           section.
  86.  
  87.         Uses of names and addresses
  88.  
  89.             A name allows a user, with the help of a "client" program,
  90.           to retrieve or operate on objects via a "server" program.  A
  91.           name may be passed for example:
  92.                   - In communication of any form between two people, to
  93.                     refer to a document, or part of a document;
  94.                   - As part of the description of a link associated with
  95.                     a hypertext document;
  96.                   - As part of the result of searching an index.
  97.             Some typical requirements on a name which are met to a
  98.           varying degree by various schemes are for example that the
  99.           name is
  100.             Persistent     A given name will remain valid as long as it
  101.                            is needed;
  102.             Extensible     A given naming syntax will remain valid
  103.                            through the introduction of new protocols and
  104.                            directory technologies;
  105.             Resolvable     A name will contain enough information to
  106.                            allow the document or index to which it
  107.  
  108.  
  109. Internet Draft               2              March 1993 Uniform Resource Locators                        Berners-Lee
  110.  
  111.  
  112.                            refers to be accessed, perhaps via resolution
  113.                            into an intermediate, more physical, name.
  114.             Unique         Each object can only have one such name.  The
  115.                            fact that two such names are different
  116.                            implies that the objects to which they refer
  117.                            are different (in some way).
  118.             Unambiguous    The fact that two names are identical implies
  119.                            that the objects named are the same (in some
  120.                            way).
  121.             The syntax discussed is the syntax of one name, be it a
  122.           lasting name or a physical address.  When a directory server
  123.           or hypertext link contains a set of alternative names, then
  124.           that is beyond the scope of this syntax.  Similarly, a syntax
  125.           for describing a compound object is outside the scope of this
  126.           syntax.  The specific locator name spaces (defined under the
  127.           umbrella of the general syntax) each meet the requirements
  128.           above to a greater or lesser extent.
  129.  
  130.         Current practice
  131.  
  132.             Current protocols use many different standards for names.
  133.           For some protocols, such as ISO-10163 Search and Retrieve
  134.           protocol[16], the names returned in a search are only valid
  135.           during the session. For others, such as FTP[9], they are
  136.           lasting names which may be used for object retrieval at a
  137.           later time.  Typically, however, they are not long-lasting
  138.           names which are independent of the location of the object.
  139.           Such names may be provided using directory servers such as
  140.           x.500.  They will refer to the registration, however formal or
  141.           informal, of a object with a particular organisation or
  142.           person.  Both hypertext and  manual references rely on long-
  143.           lasting names.
  144.             Current names are basically location specifiers (addresses).
  145.           These may be known as Uniform Resource Locators (URLs). They
  146.           give the necessary parts of an address for a reader to access
  147.           an information provider using the given protocol, and ask for
  148.           the object required. Examples of names used by various
  149.           protocols include
  150.  
  151. File Transfer Protocol (Postel 1985):
  152.                          Host name or IP-address
  153.                               [TCP port]
  154.                          [user name, password]
  155.                          Filename
  156.  
  157. W.A.I.S. (Kahle 1990)         Host name or IP-address
  158.                          [TCP port]
  159.                          database name
  160.                          local document id
  161.  
  162. Gopher (Alberti 1991)         Host name or IP-address
  163.                          [TCP port]
  164.  
  165.  
  166. Internet Draft               3              March 1993 Uniform Resource Locators                        Berners-Lee
  167.  
  168.  
  169.                          database name
  170.                          selector string
  171.  
  172. HTTP (Berners-Lee 1991)       Host name or IP-address
  173.                          [TCP port]
  174.                          local object id
  175.  
  176. NNTP (Kantor 1986) group Group name
  177.  
  178. NNTP article             Host name
  179.                          unique message identifier
  180.  
  181. Prospero links (Neuman 1992)  Host name or IP address
  182.                          [UDP port]
  183.                          Host specific object name
  184.                          [version]
  185.                          [identifier]*
  186.  
  187. x.500 distinguished name Country
  188.                          Organisation
  189.                          Organisational unit
  190.                          Person
  191.                          Local object identifier
  192.  
  193.  
  194.             Other systems with their own naming schemes include BITNET
  195.           "LISTSERV" application, FTAM file retrieval, SQLnetTM remote
  196.           database search, proprietary  distributed file systems, etc.
  197.           Conventional syntax for writing these addresses involve
  198.           various forms of punctuation to separate these parts.  This
  199.           sometimes,  but not always, allows the naming scheme to be
  200.           deduced from the punctuation.  For example, a name of the form
  201.           xxx.yyy.zz.edu:/pub.aa.bb.cc  often implies anonymous FTP
  202.           access.  However, there is no well-defined algorithm for
  203.           parsing an arbitrary name, as there is no common syntax.
  204.  
  205.  
  206.         Expandability
  207.  
  208.  
  209.             There will necessarily be a phase during which lasting names
  210.           will become more  common, as the deployment of directory
  211.           services increases to the point where  every user has direct
  212.           or indirect access to one.  Even then, however, one can
  213.           envisage more than one competing directory system, and cases
  214.           in which physical  names are still required.  A directory
  215.           service takes a lasting name and reduces it  to a physical
  216.           address (or set of addresses) which, though less useful for
  217.           lasting reference, is the only way to actually retrieve the
  218.           object.
  219.  
  220.  
  221.  
  222.  
  223. Internet Draft               4              March 1993 Uniform Resource Locators                        Berners-Lee
  224.  
  225.  
  226.             An addressing syntax is required which will be able to
  227.           encompass existing  physical address spaces, and be extendible
  228.           to any future protocols.  This  requires that it contain an
  229.           identifier for the protocol in use. The format of the rest  of
  230.           the address will necessarily depend to a certain extent on the
  231.           protocol.
  232.  
  233.  
  234.         Relevance
  235.  
  236.             The life of a name is limited by any information contained
  237.           within it which may  become prematurely invalid. It is
  238.           therefore necessary to limit the contents of a name to the
  239.           information required for the operations above.  Other
  240.           extraneous information about the object (its size, data
  241.           format, authorisation details, etc.) may in general change
  242.           with time and should not be part of the name.
  243.             One might expect such information to be part of the "header"
  244.           of a object, and for protocols to allow the header information
  245.           to be retrieved independently of the objects themselves.
  246.             Any physical address may be subject to change with time:
  247.           hence we encourage the move to lasting names and directory
  248.           services.
  249.  
  250.         Uniqueness
  251.  
  252.             Clearly one requires unambiguous names in the sense that one
  253.           name should refer to only one logical object. This is the case
  254.           with all the addressing schemes in use, whether they are
  255.           directory systems or physical addresses. (The internet
  256.           addresses all rely on the domain name (Mockapetris 1987) of
  257.           the host to achieve this).
  258.             However, given that names can be translated, many apparently
  259.           different names  may lead to the same object. Any object may
  260.           therefore be referred to by many  names. One needs to be able
  261.           to know whether two objects, retrieved through  different
  262.           paths, are in fact the same object.
  263.             It is suggested that each object have a unique                                                    unique                                                    unique "official"
  264.           name. This name could be stored in the object in some
  265.           representations, or stored in a database  accessible to the
  266.           server, for example.  Any references within that object
  267.           should be parsed in the context of the official name.  In the
  268.           presence of a  directory service, the official name will
  269.           normally be the registered name of the object. However, a name
  270.           in any scheme will do, so long as it is completely specified.
  271.           On systems which do not allow the name to be stored (such as
  272.           anonymous FTP archive sites), a possible ambiguity will always
  273.           exist as to whether two similarly named objects are in fact
  274.           the same.
  275.             Note that Internet newsgroup names are unique world-wide,
  276.           and news articles carry a unique message id.
  277.  
  278.  
  279.  
  280. Internet Draft               5              March 1993 Uniform Resource Locators                        Berners-Lee
  281.  
  282.  
  283.             In most other cases, however, there is no guarantee that
  284.           dereferencing a URL will work, or that if it does the object
  285.           it refers to will in fact be the object intended.  URLs such
  286.           as FTP addresses are transient in that files may be moved and
  287.           even replaced by different files of the same name.  This
  288.           disorganisation may be limited by good server management,  but
  289.           a naming scheme which is independent also of internet host
  290.           name is obviously preferable.
  291.  
  292.         Readability by people
  293.  
  294.              This requirement has been put forward by several people
  295.           (Clifford Lynch, Douglas Engelbart among others), and disputed
  296.           by others.  The author's view is that it will be a while
  297.           before technology and standardisation have reached the point
  298.           at which names and addresses will be hidden from human beings.
  299.           As long as they must be written on the backs of envelopes and
  300.           "cut and pasted" between workstation windows, there is a
  301.           strong need for names to be
  302.                   . Short
  303.                   . Composed of printable (preferably non-white)
  304.                     characters
  305.                   . To a certain extent, understadable by a human being.
  306.  
  307.  
  308.         Structure of names and addresses.
  309.  
  310.  
  311.             A physical address is required in order for
  312.  
  313.                   . The user's program to contact the server
  314.                   . The server to search and index,  retrieve a object,
  315.                     or look up the name;
  316.                   . The user's program to locate an individual position
  317.                     or element within a object.
  318.  
  319.             This suggests that a name be structured, such that the parts
  320.           necessary for these  three operations be separate and only
  321.           used by those system elements which need  those parts. This
  322.           corresponds to the basic principle of information hiding.  In
  323.           fact,  four parts are necessary, including the indicator of
  324.           the naming scheme to be used:
  325.  
  326.                   . The naming scheme: a registered identifier for the
  327.                     protocol.
  328.                   . The name of a suitable server. The format of this
  329.                     part must be well defined. It will depend on the
  330.                     lower-layer protocols in use.  Systems which use
  331.                     widely distributed information, such as x.500 and
  332.                     NNTP, do not need this part as each client generally
  333.                     contacts his nearest server (or a particular
  334.                     server).
  335.  
  336.  
  337. Internet Draft               6              March 1993 Uniform Resource Locators                        Berners-Lee
  338.  
  339.  
  340.                   . Information to be passed to the server. This may be
  341.                     private to the server, as all names may be generated
  342.                     and used by the same server. This part of the name
  343.                     should be opaque to the client.
  344.                   . Information to be used by the application once the
  345.                     object has been retrieved.  This part is private to
  346.                     the application (or, more strictly, the data format)
  347.                     and so cannot be defined here.
  348.  
  349.             Both lasting names and physical addresses often share a
  350.           hierarchical structure. This follows often from the
  351.           organisation of the system. From the naming point of view, it
  352.           has the advantage that a reference in one object to another
  353.           object need not include that part of the structure which is
  354.           common to both names.
  355.  
  356.         Choices
  357.  
  358.             The requirements above leave little room for choice save for
  359.           the order and punctuation of the elements of an address.  It
  360.           is only reasonable for the order of writing of the parts to be
  361.           consistently from left to right (or right to left) with
  362.           increasing specificity.  Punctuation schemes fall into two
  363.           categories (Huitema 1991): tagged schemes in which field are
  364.           given names, and fields which use special characters and field
  365.           order. The latter tend to be more compact schemes.
  366.  
  367.  
  368.  
  369.                     protocol: aftp host: xxx.yyy.edu path:
  370.                     /pub/doc/README
  371.  
  372.                     PR=aftp; H=xx.yy.edu; PA=/pub/doc/README;
  373.  
  374.                     PR:aftp/xx.yy.edu/pub/doc/README
  375.  
  376.                     /aftp/xx.yy.edu/pub/doc/README
  377.  
  378.  
  379.  
  380.             Fig 1. Some alternative tagged and untagged representations
  381.  
  382.             The choice of special symbols for punctuation tends to be a
  383.           matter of taste. It is easier to read  addresses whose symbols
  384.           correspond to those of one's favourite operating system.  A
  385.           variety of symbols is needed so that when a name is
  386.           abbreviated it is possible to tell which parts have been
  387.           omitted. The  recommendation below uses special characters in
  388.           order to achieve a compact name, and uses where possible
  389.           punctuation symbols established in the internet or unix
  390.           community.
  391.  
  392.  
  393.  
  394. Internet Draft               7              March 1993 Uniform Resource Locators                        Berners-Lee
  395.  
  396.  
  397.             The choice of escape character for introducing
  398.           representations of non-allowed characters also tends to be a
  399.           matter of taste. An ANSI standard exists in the C language,
  400.           using the back-slash character "\". The use of this character
  401.           on unix command lines, however, can be a problem as it is
  402.           interpreted by many shell programs, and would have itself to
  403.           be escaped.
  404.             The use of white space characters has been avoided  in URLs:
  405.           spaces are not legal characters.   This was done because of
  406.           the frequent introduction of extraneous white space when lines
  407.           are wrapped by systems such as mail, or sheer necessity of
  408.           narrow column width, and because of the  inter-conversion of
  409.           various forms of white space which occurs during character
  410.           code conversion and the transfer of text between applications.
  411.  
  412.  
  413.      Recommendations
  414.  
  415.             This section describes the syntax for "Uniform Resource
  416.           Locators" (URLs):  that is, basically physical addresses of
  417.           objects which are retrievable using protocols already deployed
  418.           on the net.  The generic syntax provides a framework for new
  419.           schemes for names to be resolved using as yet undefined
  420.           protocols.
  421.             The syntax is described in two parts. Firstly, we give the
  422.           syntax rules of a completely specified name;  secondly, we
  423.           give the rules under which parts of the name may be omitted in
  424.           a well-defined context.
  425.  
  426.         Full form
  427.  
  428.             A complete URL consists of a naming scheme specifier
  429.           followed by a string whose format is a function of the naming
  430.           scheme. For locators of information on the internet, a common
  431.           syntax is used for the  IP address part. A BNF description of
  432.           the URL syntax is given in an a later section.  The components
  433.           are as follows.
  434.  
  435.         Fragment-id
  436.  
  437.             This represents a part of, fragment of, or a sub-function
  438.           within, an object or object. Its syntax and semantics are
  439.           defined by the application responsible for the object, or the
  440.           specification of the content type of the object. The only
  441.           definition here is of the allowed characters by which it may
  442.           be represented in a URL.
  443.             The fragment-id follows the URL of the whole object from
  444.           which it is separated by a hash sign (#).  If the fragment-id
  445.           is void, the hash sign may be omitted: A void fragment-id with
  446.           or without the hash sign means that the URL refers to the
  447.           whole object.
  448.  
  449.  
  450.  
  451. Internet Draft               8              March 1993 Uniform Resource Locators                        Berners-Lee
  452.  
  453.  
  454.             While this hook is allowed for identification of fragments,
  455.           the question of addressing of parts of objects, or of the
  456.           grouping of objects and relationship between contined and
  457.           containing objects, is not addressed by this object.
  458.             This object does not address the question of objects which
  459.           are different versions of a "living" object, nor of expressing
  460.           the relationships between different versions and the living
  461.           object.
  462.  
  463.         Scheme
  464.  
  465.  
  466.             Within the URL of a object, the first element is the name of
  467.           the scheme, separated from the rest of the object by a colon.
  468.           The rest of the URL follows the colon in a format depending on
  469.           the scheme.
  470.  
  471.  
  472.         Internet protocol parts
  473.  
  474.  
  475.             Those schemes which refer to internet protocols have a
  476.           common syntax for the rest of the object name. This starts
  477.           with a double slash "//" to indicate its presence, and
  478.           continues until the following slash "/".  Within that section
  479.           are
  480.  
  481.                   . An optional user name, if this must be quoted to the
  482.                     server, followed by  a commercial at sign "@".  (Use
  483.                     of this field is discouraged. Provision  of encoding
  484.                     a password after the user name, delimited by a
  485.                     colon, could  be made but obviously is only useful
  486.                     when the password is public, in  which case it
  487.                     should not be necessary, so that is also
  488.                     discouraged.)
  489.                   . The internet domain name  of the host in RFC1037
  490.                     format (or, optionally  and less advisably, the IP
  491.                     address as a set of four decimal digits)
  492.                   . The port number, if it is not the default number for
  493.                     the protocol, is given in decimal notation after a
  494.                     colon.
  495.  
  496.  
  497.         Path
  498.  
  499.             The rest of the locator is known as the "path". It may
  500.           define details of how the client should communicate with the
  501.           server, including information to be passed transparently to
  502.           the server without any processing by the client.
  503.             The path is interpreted in a manner dependent on the
  504.           protocol being used. However, when it contains slashes, these
  505.           must imply a hierarchical structure.
  506.  
  507.  
  508. Internet Draft               9              March 1993 Uniform Resource Locators                        Berners-Lee
  509.  
  510.  
  511.  
  512.         Partial form
  513.  
  514.             In a certain limited set of cases, generally within a
  515.           certain application, it may be useful to pass only a section
  516.           of the URL. Within a object whose URL is well defined, the URL
  517.           of another object may be given in abbreviated form, where
  518.           parts of the two URLs are the same. This allows objects within
  519.           a group to refer to each other without requiring the space for
  520.           a complete reference, and it incidentally allows the group of
  521.           objects  to be moved without changing any references.  This is
  522.           not discussed in detail here, it is only mentioned so that the
  523.           characters required by the technique be reserved for that
  524.           purpose.  It must be emphasised that when a reference is
  525.           passed in anything other than a well controlled context, the
  526.           full form must always be used.
  527.             The partial form relies on a property of the URL syntax that
  528.           certain characters ("/") and certain path elements ("..", ".")
  529.           have a significance reserved for representing a hierarchical
  530.           space, and must be recognised as such by both clients and
  531.           servers.
  532.             A partial form can be distinguished from a full form in that
  533.           a full form must have a colon and that colon must occur before
  534.           any slash characters.
  535.             The rules for the use of a partial name are:
  536.                   . If the scheme parts  are different, the whole
  537.                     absolute locator must be given. Otherwise, the
  538.                     scheme is omitted, and:
  539.                   . If the host and/or port parts are the different, the
  540.                     host, port name and all the rest of the locator must
  541.                     be given.
  542.                   . If the access and host parts are the same, then the
  543.                     path may be given in absolute (fully qualified) or
  544.                     relative form. Within the path:
  545.                   . If a leading slash is present, the path is absolute.
  546.                     Otherwise, a relative path is interpreted as
  547.                     follows:
  548.                   . The last part of the path of the context locator
  549.                     (anything following the rightmost slash) is removed,
  550.                     and the given partial URL appended in its place.
  551.                   . Within the result,  all occurrences of "/xxx/.."  or
  552.                     "/." are recursively removed, where xxx, ".." and
  553.                     "."  are complete path elements.
  554.  
  555.  
  556.         Encoding prohibited characters
  557.  
  558.             When a system uses a local addressing scheme, it is useful
  559.           to provide a mapping from local addresses into URLs so that
  560.           references to objects within the addressing scheme may be
  561.           referred to globally, and possibly accessed through gateway
  562.           servers.
  563.  
  564.  
  565. Internet Draft               10             March 1993 Uniform Resource Locators                        Berners-Lee
  566.  
  567.  
  568.             Any mapping scheme may be defined provided it is
  569.           unambiguous, reversible, and provides valid URLs. It is
  570.           recommended that where hierarchical aspects to the local
  571.           naming scheme exist, they be mapped onto the hierarchical URL
  572.           path syntax in order to allow the partial form to be used.
  573.             The following encoding method is used for mapping WAIS, FTP,
  574.           Prospero and Gopher addresses onto URLs.  Where the local
  575.           naming scheme uses ASCII characters which are not allowed in
  576.           the URL,  these may be represented in the URL by a percent
  577.           sign "%" followed by two hexadecimal digits (0-9, A-F) giving
  578.           the ISO Latin 1 code for that character.  Character codes
  579.           other than those allowed by the syntax shall not be used in a
  580.           URL.
  581.             The same encoding method may be used for encoding characters
  582.           whose use, although technically allowed in a URL, would be
  583.           unwise due to problems of corruption by imperfect gateways or
  584.           misrepresentation due to the use of variant character sets, or
  585.           which would simply be awkward in a given environment.  As a %
  586.           sign always indicates an encoded character, a URL may be made
  587.           safer simply by encoding any characters considered unsafe,
  588.           while leaving already encoded characters still encoded.
  589.             (Note: If a new naming scheme is introduced which encodes
  590.           binary data as opposed to text, then a more compact encoding
  591.           such as pure hex or base 64 would be more appropriate.)
  592.             The same considerations apply to mapping local fragment
  593.           identifiers onto the fragmentid part of a URL.
  594.  
  595.      Specific Naming Schemes
  596.  
  597.             The mapping for some existing standard and experimental
  598.           protocols is outlined in the BNF syntax definition.  Notes on
  599.           particular protocols follow.
  600.  
  601.         HTTP
  602.  
  603.             The HTTP protocol specifies that the path is handled
  604.           transparently by those who handle URLs, except for the servers
  605.           which dereference them.   The path is passed by the client to
  606.           the server with any request, but is not otherwise understood
  607.           by the client.  The fragmentid part is not sent with the
  608.           request.  The search part, if present, is sent.
  609.  
  610.         FTP
  611.  
  612.             The ftp: prefix indicates a file which is to be picked up
  613.           from the file system of the given host. The FTP protocol is
  614.           used. The port number if given gives the port of the FTP
  615.           server if not the FTP default. (A client may in practice use
  616.           local file access to retrieve objects which are available
  617.           though more efficient means such as local file open or NFS
  618.           mounting, where this is available and equivalent)
  619.  
  620.  
  621.  
  622. Internet Draft               11             March 1993 Uniform Resource Locators                        Berners-Lee
  623.  
  624.  
  625.             The syntax allows for the inclusion of a user name and even
  626.           a password for those systems which do not use the anonymous
  627.           FTP convention. The default, however, if no user or password
  628.           is supplied, will be to use that convention, viz. that the
  629.           user name is "anonymous" and the password the user's mail
  630.           address.
  631.             The adoption of a unix-style syntax involves the conversion
  632.           into non-unix local forms by either the client or server. Some
  633.           non-unix servers do this, but clients wishing to access sites
  634.           which do not have unix-style naming will need certain
  635.           algorithms to enable  other file systems to be identified and
  636.           treated.  Client software may also have to be flexible in
  637.           terms of the sequence of FTP commands used with different
  638.           varieties of server.  In view of a tendency for file systems
  639.           to look increasingly similar, it was felt that the URL
  640.           convention should not be weighed down by extra mechanisms for
  641.           identifying these cases.
  642.             The data format of a file can only, in the general FTP case,
  643.           be deduced from the name, normally the suffix of the name.
  644.           This is not standardised. The transfer mode (binary or text)
  645.           must in turn be deduced from the data format.  It is
  646.           recommended that conventions for suffixes of public archives
  647.           be established, but it outside the scope of this paper.
  648.  
  649.         News
  650.  
  651.             The news locators refer to either news group names or
  652.           article message identifiers which must conform to the rules of
  653.           RFC 850.  A message identifier may be distinguished from a
  654.           news group name by the presence of the commercial at "@"
  655.           character.   These rules imply that within an article, a
  656.           reference to a news group or to another article will be a
  657.           valid URL (in the partial form).
  658.             Note: An outstanding problem is that the message identifier
  659.           is insufficient to allow the retrieval of an expired article,
  660.           as no algorithm exists for deriving an archive site and
  661.           filename.  The addition of the date and news group set to the
  662.           article's URL would allow this if a directory existed of
  663.           archive sites by news group.  Suggested subject of study in
  664.           conjunction with NNTP WG.  Further extension possible may be
  665.           to allow the naming of subject threads as addressable objects.
  666.  
  667.         WAIS
  668.  
  669.             The current WAIS implementation public domain requires that
  670.           a client know the "type" and length of a object prior to
  671.           retrieval.  These values are returned along with the internal
  672.           object identifier in the search response.  They have been
  673.           encoded into the path part of the URL in order to make the URL
  674.           sufficient for the retrieval of the object.  If  changes to
  675.           WAIS specifications make the internal id something which is
  676.  
  677.  
  678.  
  679. Internet Draft               12             March 1993 Uniform Resource Locators                        Berners-Lee
  680.  
  681.  
  682.           sufficient for later retrieval then this will not be
  683.           necessary.
  684.             Within the WAIS world, names do not of course not need to be
  685.           prefixed by "wais:"  (by the partial form rules).
  686.  
  687.         Prospero
  688.  
  689.             The Prospero (Neuman, 1991) directory srvice is used to
  690.           resolve the URL yielding an access method for the object
  691.           (which can then itself be represented as a URL if translated).
  692.           The host part contains a host name or internet address.  The
  693.           port part is optional.  The path part contains a host specific
  694.           object name, an optional version number, and an optional list
  695.           of attributes.  If these latter feilds are present thy are
  696.           separated from the host specific object name and from each
  697.           other by the characters "%00" (percent, zero, zero),  this
  698.           being and escaped string terminator (null).  If the optional
  699.           list of attributes is provided, the version number must be
  700.           present, but may be the empty string (i.e. the first attribute
  701.           would be seperaed from the host specific name by "%00%00").
  702.           External Prospero links are represented directly as URLs of
  703.           the underlying access method and are not represented as
  704.           Prospero URLs.
  705.  
  706.         Gopher
  707.  
  708.             The first character of the URL path part (after the initial
  709.           single slash) is a single-character "type" field which is that
  710.           used by the Gopher protocol.  The rest of the path is the
  711.           "selector string", with disallowed characters encoded. Note
  712.           that some selector strings begin with a copy of the gopher
  713.           type character, in which case that character will occur twice
  714.           consecutively in the URL.  If the type character and selector
  715.           are omitted, the type defaults to "1".
  716.             Gopher links which refer to different protocols should be
  717.           converted into URLs for those protocols.
  718.  
  719.         Telnet, rlogin, tn3270
  720.  
  721.             The use of URLs to represent interactive sessions is a
  722.           convenient extension to their uses for objects.  This allows
  723.           access to information systems which only provide an
  724.           interactive service, and no information server.  As
  725.           information within the service cannot be addressed
  726.           individually or, in general, automatically retrieved, this is
  727.           a less desirable, though currently common, solution.
  728.  
  729.         x500
  730.  
  731.             The mapping of x500 names onto URLs is not defined here. A
  732.           decision is required as to whether "distinguished names" or
  733.           "user friendly names" (ufn), or both, should be allowed. If
  734.  
  735.  
  736. Internet Draft               13             March 1993 Uniform Resource Locators                        Berners-Lee
  737.  
  738.  
  739.           any punctuation conversions are needed from the adopted x500
  740.           representation (such as the use of slashes between parts of a
  741.           ufn) they must be defined. This is a subject for study.
  742.  
  743.         WHOIS
  744.  
  745.             This prefix describes the access using the "whois++" scheme
  746.           in the process of definition. The hostname part is the same as
  747.           for other IP based schemes. The path part can be either a
  748.           whois handle for a whosi object, or it can be a valid whois
  749.           query string. This is a subject for further study.
  750.  
  751.         Network Management Database
  752.  
  753.             This is a subject for study.
  754.  
  755.  
  756.         Registration of naming schemes
  757.  
  758.             A new naming scheme may be introduced by defining a mapping
  759.           onto a conforming URL syntax, using a new scheme identifier.
  760.           Experimental scheme identifiers may be used by mutual
  761.           agreement between parties, and must start with the characters
  762.           "x-".  The scheme name "urn:" is reserved for the work in
  763.           progress on a scheme for more persistent names.  Therefore
  764.           URNs (Names) and URLs (Locators)  be distinguishable.  An
  765.           object which is either a URL or a URN is known as a URI
  766.           (Identifier).
  767.             It is proposed that the Internet Assigned Numbers Authority
  768.           (IANA) perform the function of registration of new schemes.
  769.           Any submission of a new URL scheme must include a definition
  770.           of an algorithm for the retrieval of any object within that
  771.           scheme. The algorithm must take  the URL and produce either a
  772.           set of URL(s) which will lead to the desired object, or the
  773.           object itself, in a well-defined or determinable format. It is
  774.           recommended that those proposing a new scheme demonstrate its
  775.           utility and operability by the provision of a gateway which
  776.           will provide images of objects in the new scheme for clients
  777.           using an existing protocol.  If the new scheme is not a
  778.           locator scheme, then the properties of names in the new space
  779.           should be clearly defined.
  780.             It is likewise recommended that, where a protocol allows for
  781.           retrieval by URI, that the client software have provision for
  782.           being configured to use specific gateway locators for indirect
  783.           access through new naming schemes.
  784.  
  785.      BNF syntax
  786.  
  787.             This is a BNF-like description of the Uniform Resource
  788.           Locator syntax. A vertical  line "|"  indicates alternatives,
  789.           and [brackets]  indicate optional parts.  Spaces are
  790.           representated by the word "space".   Single letters stand for
  791.  
  792.  
  793. Internet Draft               14             March 1993 Uniform Resource Locators                        Berners-Lee
  794.  
  795.  
  796.           single letters. All words of more than one letter below are
  797.           entities described somewhere in this description.
  798.  
  799.             fragmentaddress   url [ # fragmentid ]
  800.             url            generic | httpaddress | fileaddress |
  801.                            newsaddress | prosperoaddress | telnetaddress
  802.                            | gopheraddress | waisaddress | afsaddress
  803.             generic        scheme :  path [ ? search ]
  804.             scheme         ialpha
  805.             httpaddress    h t t p :   / / hostport  [  / path ] [ ?
  806.                            search ]
  807.             fileaddress    f t p : / / host / path
  808.             afsaddress     a f s : / / cellname / path
  809.             newsaddress    n e w s : groupart
  810.             waisaddress    waisindex | waisdoc
  811.             waisindex      w a i s : / / hostport / database [ ? search
  812.                            ]
  813.             waisdoc        w a i s : / / hostport / database / wtype /
  814.                            digits / path
  815.             groupart       * | group | article
  816.             group          ialpha [ . group ]
  817.             article        xalphas @ host
  818.             database       xalphas
  819.             wtype          xalphas
  820.             prosperoaddress   prosperolink
  821.             prosperolink   p r o s p e r o : / / hostport / hsoname [ %
  822.                            0 0 version [ attributes ] ]
  823.             hsoname        path
  824.             version        digits
  825.             attributes     attribute [ attributes ]
  826.             attribute      alphanums
  827.             telnetaddress  t e l n e t : / / [ user @ ] hostport
  828.             gopheraddress  g o p h e r : / / hostport  [/ gtype  [
  829.                            selector ] ] [ ? search ]
  830.             hostport        host [ : port ]
  831.             host           hostname | hostnumber
  832.             cellname       hostname
  833.             hostname       ialpha [  .  hostname ]
  834.             hostnumber     digits . digits . digits . digits
  835.             port           digits
  836.             selector       path
  837.             path           void |  xpalphas  [  / path ]
  838.             search         xalphas [ + search ]
  839.             user           xalphas
  840.             fragmentid     xalphas
  841.             gtype          xalpha
  842.             xalpha         alpha | digit | safe | extra | escape
  843.             xalphas        xalpha [ xalphas ]
  844.             xpalpha        xalpha | +
  845.             xpalphas       xpalpha [ xpalpha ]
  846.             ialpha         alpha [ xalphas ]
  847.  
  848.  
  849.  
  850. Internet Draft               15             March 1993 Uniform Resource Locators                        Berners-Lee
  851.  
  852.  
  853.             alpha          a | b | c | d | e | f | g | h | i | j | k | l
  854.                            | m | n | o  | p | q | r | s | t | u | v | w
  855.                            | x | y | z | A | B | C  | D | E | F | G | H
  856.                            | I | J | K | L | M | N  | O | P |  Q | R | S
  857.                            | T | U | V | W | X | Y | Z
  858.             digit          0 |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
  859.             safe           $ | - | _ | @ | . | &
  860.             extra          ! | * | " |  ' | ( | ) | : | ; | , | space
  861.             escape         % hex hex
  862.             hex            digit | a | b | c | d | e | f | A | B | C | D
  863.                            | E | F
  864.             variant        { | } | |                                   |                                   | | [ | ] | \ | ^ | ~
  865.             punctuation    < | >
  866.             digits         digit [ digits ]
  867.             alphanum       alpha | digit
  868.             alphanums      alphanum [ alphanums ]
  869.             void
  870.  
  871.  
  872.      Security considerations
  873.  
  874.             The URL scheme does not in itself pose a security threat.
  875.           Users should beware that there is no general guarantee that a
  876.           URL which at one time points to a given object continues to do
  877.           so, and does not even at some later time point to a different
  878.           object due to the movement of objects on servers.
  879.  
  880.      Conclusion
  881.  
  882.             A need has been demonstrated, and a number of requirements
  883.           have been stated for uniform resource locators (URLs). A
  884.           scheme has been proposed which builds on existing conventions
  885.           to define a syntax for URLs.  This scheme has been in serious
  886.           use by World-Wide Web (W3) initiative since 1991.  Adoption of
  887.           the scheme in correspondence, standards and software will ease
  888.           the use of references to on-line information in a flexible way
  889.           as the coming information age arrives.
  890.  
  891.      Acknowledgements
  892.  
  893.             This paper builds on the basic W3 design and much discussion
  894.           of these issues by many people on the network.  The discussion
  895.           was particularly stimulated by articles by Clifford Lynch
  896.           (1991), Brewster Kahle (1991) and Wengyik Yeong (1991b).
  897.           Contributions from John Curran (NEARnet), Clifford Neuman
  898.           (ISI) Ed Vielmetti (MSEN) and later the IETF URL BOF and URI
  899.           working group have been incorporated into this issue of this
  900.           paper.
  901.             The draft url4  (Innternet draft 00) was generated from url3
  902.           following discussion and overall approval of the URL working
  903.           group on 29 March 1993. The paper url3 had been generated from
  904.           udi2 in the light of discussion at the UDI BOF meeting at the
  905.  
  906.  
  907. Internet Draft               16             March 1993 Uniform Resource Locators                        Berners-Lee
  908.  
  909.  
  910.           Boston IETF in July 1992. Draft url4 was Internet Draft 00.
  911.           Draft url5 incorporated changes suggested by Clifford Neuman,
  912.           and draft url6 (ID 01) incorporated character group changes
  913.           and a few other fixes defined by the IETF URI WG in submitting
  914.           it as a proposed standard.
  915.  
  916.      References
  917.  
  918.         Alberti, R., et.al.  (1991) "Notes on the Internet Gopher
  919.             Protocol" University of Minnesota, December 1991,
  920.             URL=<ftp://boombox.micro.umn.edu/pub/gopher/gopher_protocol
  921.             >. See also
  922.             URL=<gopher://gopher.micro.umn.edu/00/Information%20About%2
  923.             0Gopher/About%20Gopher>
  924.         Berners-Lee, T., (1991) "Hypertext Transfer Protocol (HTTP)",
  925.             CERN, December 1991,
  926.             URL=<ftp://info.cern.ch./pub/www/doc/http-spec.txt>
  927.         Davis, F, et  al., (1990) "WAIS Interface Protocol: Prototype
  928.             Functional Specification", Thinking Machines Corporation,
  929.             April 23, 1990
  930.             URL=<ftp://quake.think.com/pub/wais/doc/protspec.txt>
  931.         International Standards Organization, (1991) Information and
  932.             Documentation - Search and Retrieve Application Protocol
  933.             Specification for open Systems Interconnection, ISO-10163
  934.         Huitema, C., (1991) "Naming: strategies and techniques",
  935.             Computer Networks and ISDN Systems 23 (1991) 107-110.
  936.         Kahle, Brewster, (1991) "Document Identifiers,  or
  937.             International Standard Book Numbers for the Electronic
  938.             Age", URL=<ftp://quake.think.com/pub/wais/doc/doc-ids.txt>
  939.         Kantor, B., and Lapsley, P., (1986) "A proposed standard for
  940.             the stream-based transmission of news", Internet RFC-977,
  941.             February 1986. URL=<ftp://nnsc.nsf.net/rfc/rfc977.txt>
  942.         Lynch, C., Coallition for Networked Information: (1991)
  943.             "Workshop on ID and Reference Structures for Networked
  944.             Information", November 1991. See
  945.             URL=<wais://quake.think.com/wais-discussion-archives?lynch>
  946.         Mockapetris, P., (1987) "Domain names + concepts and
  947.             facilities", RFC-1034, USC-ISI, November 1987,
  948.             URL=<ftp://nnsc.nsf.net/rfc/rfc1034.txt>
  949.         Neuman, B. Clifford, (1992) "Prospero: A Tool for Organizing
  950.             Internet Resources", Electronic Networking: Research,
  951.             Applications and Policy, Vol 1 No 2, Meckler Westport CT
  952.             USA.  See also
  953.             URL=<ftp://prospero.isi.edu/pub/prospero/oir.ps>
  954.         Postel, J. and Reynolds, J. (1985)  "File Transfer Protocol
  955.             (FTP)", Internet RFC-959, October 1985.
  956.             URL=<ftp://nnsc.nsf.net/rfc/rfc959.txt>
  957.         Yeong, W., (1991a) "Towards Networked Information Retrieval",
  958.             Technical report 91-06-25-01, June 1991, Performance
  959.             Systems International, Inc.
  960.             URL=<ftp://uu.psi.com/wp/nir.txt>
  961.  
  962.  
  963.  
  964. Internet Draft               17             March 1993 Uniform Resource Locators                        Berners-Lee
  965.  
  966.  
  967.         Yeong, W., (1991b), "Representing Public Archives in the
  968.             Directory", Internet Draft, November 1991.  In
  969.             <wais://nnsc.nsf.net/internet-drafts?yeong>. Work in
  970.             progress.
  971.  
  972.         Author's address
  973.  
  974.  
  975.                Tim Berners-Lee
  976.                World-Wide Web project
  977.                CERN, 1211 Geneva 23, Switzerland
  978.                +41 (22)767 3755
  979.                timbl@info.cern.ch
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021. Internet Draft               18             March 1993